home *** CD-ROM | disk | FTP | other *** search
- ; FSEARCH.SRC ├128 40/80
- ; DOUG ZIMMER 10/6/89
- ;
- .ORG $2B00 ; ABOVE ┬┴╙╔├ PROGRAM
- ; VIEW:
- ; ENTIRE FILE - SYS DEC($2B00),0
- ; START AT STRING1 - SYS DEC($2B00),1
- ; START AT STRING1, STOP
- ; AFTER STRING2 - SYS DEC($2B00),2
- ; PRINT:
- ; ENTIRE FILE - SYS DEC($2B00),3
- ; START AT STRING1 - SYS DEC($2B00),4
- ; START AT STRING1, STOP
- ; AFTER STRING2 - SYS DEC($2B00),5
- ;
- ;DIS
- ;
- STRING1 = *+$200 ; 1ST BYTE IS LENGTH
- STRING2 = *+$281
- ;STRINGS ARE 128 CHARS. MAX.
- ;
- .LST "KERNAL128.TBL"
- ;OBJ "@0:FSEARCH.OBJ"
- ;
- STA MODE
- ;
- LDX #$0F ; SET BANK CONFIG. 15
- JSR $FF6B
-
- STA $FF00
- ;
- LDA MODE
- BEQ VF'JUMP ; VIEW ALL IF 0,
- CMP #3 ; PRINT ALL IF 3,
- BEQ PF'JUMP ; OTHERWISE SEARCH
- JMP SEARCH
- ;
- VF'JUMP = *
- JMP VIEW'FILE
- PF'JUMP = *
- SEI
- JMP PRINT'FILE
- ;
- SEARCH = *
- JSR CLRCH
- LDX #1
- JSR CHKIN ; SET INFILE=1
- NEW'SEARCH1 = *
- LDY #0 ; RESET COUNTER
- READ'CMP1 = *
- INY ; NEXT CHAR IN STRING
- JSR STOP ; STOP KEY CHECK
- BNE +
- JMP V'EXIT
- + JSR BASIN ; GET CHAR FROM FILE
- LDX $90 ; END OF FILE CHECK
- BEQ +
- JMP V'EXIT
- + CMP STRING1,Y ; IF NO MATCH, GO TO
- BNE NEW'SEARCH1 ; 1ST CHAR IN STRING
- TYA
- CMP STRING1 ; END OF STRING?
- BNE READ'CMP1
- ;
- PRINT'STRING1 = *
- LDY #0 ; RESET COUNTER
- JSR CLRCH
- LDA MODE
- CMP #1
- BEQ PRT'CHAR
- CMP #2
- BEQ PRT'CHAR
- SEI ; DISABLE INTERRUPTS
- LDX #4 ; PRINTER OUTPUT
- JSR CKOUT
- LDA #13 ; PRINT 2 RETURNS
- JSR BSOUT
- LDA #13
- JSR BSOUT
- PRT'CHAR = *
- INY ; NEXT CHAR IN STRING
- LDA STRING1,Y
- JSR BSOUT ; PRINT IT
- TYA
- CMP STRING1 ; END OF STRING?
- BNE PRT'CHAR
- LDA MODE
- CMP #1
- BEQ VF'JUMP ; VIEW REST OF FILE
- CMP #4
- BEQ PF'JUMP ; PRINT REST OF FILE
- CMP #5
- BEQ NEW'PSEARCH2 ; PRINT THRU STRING2
- JSR CLRCH
- LDX #1
- JSR CHKIN
- ;
- NEW'VSEARCH2 = *
- LDY #0 ; RESET COUNTER
- VREAD'CMP2 = *
- INY ; NEXT CHAR IN STRING
- JSR STOP ; STOP KEY CHECK
- BNE +
- JMP V'EXIT
- + JSR BASIN ; GET CHAR FROM FILE
- JSR BSOUT ; PRINT CHAR
- LDX $90 ; END OF FILE CHECK
- BEQ +
- JMP V'EXIT
- + CMP STRING2,Y ; IF NO MATCH, GO TO
- BNE NEW'VSEARCH2 ; 1ST CHAR IN STRING
- TYA
- CMP STRING2 ; END OF STRING?
- BNE VREAD'CMP2
- JMP V'EXIT
- ;
- NEW'PSEARCH2 = *
- LDY #0 ; RESET COUNTER
- PREAD'CMP2 = *
- INY ; NEXT CHAR IN STRING
- JSR CLRCH
- LDX #1
- JSR CHKIN ; SET INFILE=1
- JSR STOP ; STOP KEY CHECK
- BNE +
- JMP P'EXIT
- + JSR BASIN ; GET CHAR FROM FILE
- STA CHAR ; STORE IT
- LDX $90 ; END OF FILE CHECK
- BEQ +
- JSR CLRCH
- LDX #4
- JSR CKOUT ; SET OUTFILE=4
- LDA CHAR
- JSR BSOUT ; PRINT LAST CHAR
- JMP P'EXIT
- + JSR CLRCH
- LDX #4
- JSR CKOUT ; SET OUTFILE=4
- LDA CHAR
- JSR BSOUT ; PRINT CHAR
- CMP STRING2,Y ; IF NO MATCH, GO TO
- BNE NEW'PSEARCH2 ; 1ST CHAR IN STRING
- TYA
- CMP STRING2 ; END OF STRING?
- BNE PREAD'CMP2
- JMP P'EXIT
- ;
- VIEW'FILE = *
- JSR CLRCH
- LDX #1
- JSR CHKIN ; SET INFILE=1
- - JSR STOP ; STOP KEY CHECK
- BNE +
- JMP V'EXIT
- + JSR BASIN ; GET CHAR FROM FILE
- JSR BSOUT ; PRINT CHAR
- LDY $90 ; END OF FILE CHECK
- BEQ -
- JMP V'EXIT
- ;
- PRINT'FILE = *
- JSR CLRCH
- LDX #1
- JSR CHKIN ; SET INFILE=1
- JSR STOP ; STOP KEY CHECK
- BNE +
- JMP P'EXIT
- + JSR BASIN ; GET CHAR FROM FILE
- STA CHAR ; STORE IT
- LDX $90 ; END OF FILE CHECK
- BEQ +
- JSR CLRCH
- LDX #4
- JSR CKOUT ; SET OUTFILE=4
- LDA CHAR
- JSR BSOUT ; PRINT LAST CHAR
- JMP P'EXIT
- + JSR CLRCH
- LDX #4
- JSR CKOUT ; SET OUTFILE=4
- LDA CHAR
- JSR BSOUT ; PRINT CHAR
- JMP PRINT'FILE
- ;
- V'EXIT = *
- CLI ; DISABLE INTERRUPTS
- JMP CLRCH ; RETURN TO ┬┴╙╔├
- ;
- P'EXIT = *
- JSR CLRCH
- LDX #4
- JSR CKOUT ; SET OUTFILE=4
- LDA #13 ; PRINT 2 RETURNS
- JSR BSOUT
- LDA #13
- JSR BSOUT
- CLI ; DISABLE INTERRUPTS
- JMP CLRCH ; RETURN TO ┬┴╙╔├
- ;
- MODE = *
- CHAR = *+1
- ;DIS
- ;